Saltar a contenido

📘 Clase 05: Listas, Tuplas y Colecciones Básicas

  • :material-bookmark: Curso: Curso 1: Fundamentos Básicos de Python (CLASE 05)
  • :material-signal-cellular-outline: Nivel: Nivel 1 - Principiante
  • :material-lightbulb-on: Metáfora Central: «El Archivador Dinámico (Listas) y las Cajas Selladas (Tuplas)»
  • :material-laptop: Wisrovi Studio (Local): 🚀 Abrir Reto👨‍🏫 Modo Tutor
  • :material-file-pdf-box: Manual PDF Oficial: Descargar clase-05-listas-y-colecciones.pdf

Open In Colab Abrir en Studio Local Ver en GitHub


1. 💡 Fundamentación Teórica y Modelo Mental

Estructuras lineales de datos para organizar colecciones: 1. Listas (list): Mutables, ordenadas, permiten append, pop, sort. 2. Tuplas (tuple): Inmutables, ideales para registros de solo lectura o claves hash. 3. List Comprehensions: Sintaxis compacta y rápida para filtrar y transformar colecciones.

🌟 Modelo Mental de la Sesión: «El Archivador Dinámico (Listas) y las Cajas Selladas (Tuplas)»

En esta sesión anclamos el aprendizaje en la metáfora del mundo real para visualizar cómo fluyen las estructuras de datos y el flujo de ejecución en la memoria.


2. 🗺️ Arquitectura de Ejecución y Diagrama de Flujo

flowchart LR
    A["📥 Lista Original: ['sol', 'python', 'ia', 'codigo']"] --> B["⚙️ Filtro: len >= 4"]
    B --> C["🔤 Transformación: .upper()"]
    C --> D["📊 Ordenamiento: sorted()"]
    D --> E["📤 ['CODIGO', 'PYTHON']"]
    style A fill:#1e293b,color:#ffffff,stroke:#3b82f6,stroke-width:2px
    style B fill:#d97706,color:#ffffff,stroke:#fbbf24,stroke-width:2px
    style C fill:#0f766e,color:#ffffff,stroke:#2dd4bf,stroke-width:2px
    style D fill:#1e3a8a,color:#ffffff,stroke:#60a5fa,stroke-width:2px
    style E fill:#059669,color:#ffffff,stroke:#34d399,stroke-width:2px

3. 💻 Código de Implementación Práctica

```python frutas = ["manzana", "banana", "kiwi", "cereza"]

frutas_largas = [f.upper() for f in frutas if len(f) > 5] print("Frutas de más de 5 letras:", sorted(frutas_largas)) ```

```python lenguajes = ["Python", "Rust", "Go", "TypeScript"]

lenguajes.append("C++") print("Total lenguajes:", len(lenguajes)) print("Primer y último:", lenguajes[0], lenguajes[-1]) ```


4. 🛡️ Buenas Prácticas PEP 8: Antipatrones vs Código Pythonic

⚠️ Cuidado con los Antipatrones

```python a = [1, 2, 3]

b = a b.append(4) # ❌ Modifica también 'a' ```

```python a = [1, 2, 3]

b = a.copy() # ✅ 'a' permanece intacta ```


5. 🏋️ Desafío Práctico de la Clase

🎯 Enunciado del Reto

Crea una función filtrar_y_ordenar_palabras(palabras: list[str]) -> list[str] que filtre palabras con longitud >= 4, las transforme a mayúsculas y las devuelva ordenadas alfabéticamente.

⚡ Resolución Híbrida en 1 Clic (Local + Web)

Si tienes ejecutando wisrovi ui en tu terminal local, puedes 🚀 Abrir este Reto directamente en tu Studio Local (127.0.0.1:8501) para escribir tu código con auto-formateo AST, inspeccionar variables en el Heap/Stack y evaluarlo con pruebas en tiempo real.

def filtrar_y_ordenar_palabras(palabras: list[str]) -> list[str]:
# ✍️ Filtra longitud >= 4, convierte a .upper() y retorna sorted()
resultado = [p.upper() for p in palabras if len(p) >= 4]
return sorted(resultado)
💡 Pista Socrática 1

💡 Pista 1: Puedes usar una list comprehension: [p.upper() for p in palabras if len(p) >= 4]

💡 Pista Socrática 2

💡 Pista 2: Usa la función nativa sorted(...) para ordenar la lista resultante.

💡 Pista Socrática 3

💡 Pista 3: Verifica que palabras de menos de 4 letras sean descartadas.

Para resolver este ejercicio en tu entorno: 1. Abre el archivo ejercicios/reto.py de esta clase en Visual Studio Code o utiliza wisrovi ui / wisrovi tutor. 2. Implementa tu solución cumpliendo los requisitos y contratos de tipado. 3. Valida tus resultados ejecutando las pruebas unitarias:

pytest tests/curso_01/test_clase_05_listas_y_colecciones.py


6. 📚 Fuentes y Bibliografía Recomendada